module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire [15:0] low_sum;
    wire low_cout;
    wire [15:0] high_sum;
    wire cout;
    add16 low(a[15:0],b[15:0],0,low_sum,low_cout);
    add16 high(a[31:16],b[31:16],low_cout,high_sum,cout);
    assign sum={high_sum,low_sum};
endmodule